from langchain.text_splitter import RecursiveCharacterTextSplitter
from tool import custom_print

"""
RecursiveCharacterTextSplitter
    官方文档：https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter
    1.RecursiveCharacterTextSplitter 分割器允许以列表的形式定义多个分割规则；
    2.此分割器会以递归地形式对文本进行分块，直到块的大小接近 chunk_size；
    3.默认的分段规则为：["\n\n", "\n", " ", ""]，即 段 > 行 > 词 > 字。这种规则更适用于英文。
    
"""
with open('test3.txt', encoding='utf-8') as f:
    state_of_the_union = f.read()

# 采用单个回车符号分割
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=70,
    chunk_overlap=20,
    length_function=len,
)

texts = text_splitter.create_documents([state_of_the_union])

custom_print.print_all(texts)

"""
输出结果如下：

    **************************************开始遍历**************************************
    总个数：18
    --------------------------------------分割线---------------------------------------
    本文本块长度：70
    1111111111111111111，1111111111111111111111111111，1111111111111111111。1
    --------------------------------------分割线---------------------------------------
    本文本块长度：33
    111111111111111111。1111111111111。
    --------------------------------------分割线---------------------------------------
    本文本块长度：69
    22222222222222222222222222222222222222222222222，22222222222222222。222
    --------------------------------------分割线---------------------------------------
    本文本块长度：33
    2222222222222222。222222222222222。
    --------------------------------------分割线---------------------------------------
    本文本块长度：69
    3333333333333333333，33333333333333333333333333333，3333333333333333333
    --------------------------------------分割线---------------------------------------
    本文本块长度：33
    ，3333333333333333333333333333333。

"""